package com.aspose.cells;

final class zakf {
   private static final int[] u = new int[]{0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535};
   static final int[] a = new int[]{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
   int b;
   int c;
   int d;
   int e;
   int[] f;
   int[] g = new int[1];
   int[] h = new int[1];
   zakg i = new zakg();
   int j;
   int k;
   int l;
   int[] m = new int[4320];
   byte[] n;
   int o;
   int p;
   int q;
   Object r;
   long s;
   zakh t = new zakh();

   zakf(zcgb var1, Object var2, int var3) {
      this.n = new byte[var3];
      this.o = var3;
      this.r = var2;
      this.b = 0;
      this.a(var1, (long[])null);
   }

   void a(zcgb var1, long[] var2) {
      if (var2 != null) {
         var2[0] = this.s;
      }

      if (this.b != 4 && this.b == 5) {
         ;
      }

      if (this.b == 6) {
         this.i.a(var1);
      }

      this.b = 0;
      this.k = 0;
      this.l = 0;
      this.p = this.q = 0;
      if (this.r != null) {
         var1.m = this.s = var1.n.a(0L, (byte[])null, 0, 0);
      }

   }

   int a(zcgb var1, int var2) {
      int var6 = var1.b;
      int var7 = var1.c;
      int var4 = this.l;
      int var5 = this.k;
      int var8 = this.q;
      int var9 = var8 < this.p ? this.p - var8 - 1 : this.o - var8;

      while(true) {
         while(true) {
            while(true) {
               label346: {
                  label328:
                  while(true) {
                     label326: {
                        int var3;
                        byte var14;
                        int[] var16;
                        int[] var17;
                        label404: {
                           switch(this.b) {
                           case 0:
                              while(var5 < 3) {
                                 if (var7 == 0) {
                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var2);
                                 }

                                 var2 = 0;
                                 --var7;
                                 var4 |= (var1.a[var6++] & 255) << var5;
                                 var5 += 8;
                              }

                              var3 = var4 & 7;
                              this.j = var3 & 1;
                              switch(var3 >>> 1) {
                              case 0:
                                 var4 >>>= 3;
                                 var5 -= 3;
                                 var3 = var5 & 7;
                                 var4 >>>= var3;
                                 var5 -= var3;
                                 this.b = 1;
                                 continue;
                              case 1:
                                 var16 = new int[1];
                                 var17 = new int[1];
                                 int[][] var19 = new int[1][];
                                 int[][] var21 = new int[1][];
                                 zakh.a(var16, var17, var19, var21, var1);
                                 this.i.a(var16[0], var17[0], var19[0], 0, var21[0], 0, var1);
                                 var4 >>>= 3;
                                 var5 -= 3;
                                 this.b = 6;
                                 continue;
                              case 2:
                                 var4 >>>= 3;
                                 var5 -= 3;
                                 this.b = 3;
                                 continue;
                              case 3:
                                 var4 >>>= 3;
                                 var5 -= 3;
                                 this.b = 9;
                                 var1.i = "invalid block type";
                                 var14 = -3;
                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var14);
                              }
                           case 1:
                              while(var5 < 32) {
                                 if (var7 == 0) {
                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var2);
                                 }

                                 var2 = 0;
                                 --var7;
                                 var4 |= (var1.a[var6++] & 255) << var5;
                                 var5 += 8;
                              }

                              if ((~var4 >>> 16 & '\uffff') != (var4 & '\uffff')) {
                                 this.b = 9;
                                 var1.i = "invalid stored block lengths";
                                 var14 = -3;
                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var14);
                              }

                              this.c = var4 & '\uffff';
                              var5 = 0;
                              var4 = 0;
                              this.b = this.c != 0 ? 2 : (this.j != 0 ? 7 : 0);
                              continue;
                           case 2:
                              if (var7 == 0) {
                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var2);
                              }

                              if (var9 == 0) {
                                 if (var8 == this.o && this.p != 0) {
                                    var8 = 0;
                                    var9 = var8 < this.p ? this.p - var8 - 1 : this.o - var8;
                                 }

                                 if (var9 == 0) {
                                    this.q = var8;
                                    var2 = this.b(var1, var2);
                                    var8 = this.q;
                                    var9 = var8 < this.p ? this.p - var8 - 1 : this.o - var8;
                                    if (var8 == this.o && this.p != 0) {
                                       var8 = 0;
                                       var9 = var8 < this.p ? this.p - var8 - 1 : this.o - var8;
                                    }

                                    if (var9 == 0) {
                                       this.l = var4;
                                       this.k = var5;
                                       var1.c = var7;
                                       var1.d += (long)(var6 - var1.b);
                                       var1.b = var6;
                                       this.q = var8;
                                       return this.b(var1, var2);
                                    }
                                 }
                              }

                              var2 = 0;
                              var3 = this.c;
                              if (var3 > var7) {
                                 var3 = var7;
                              }

                              if (var3 > var9) {
                                 var3 = var9;
                              }

                              System.arraycopy(var1.a, var6, this.n, var8, var3);
                              var6 += var3;
                              var7 -= var3;
                              var8 += var3;
                              var9 -= var3;
                              if ((this.c -= var3) == 0) {
                                 this.b = this.j != 0 ? 7 : 0;
                              }
                              continue;
                           case 3:
                              while(true) {
                                 if (var5 >= 14) {
                                    this.d = var3 = var4 & 16383;
                                    if ((var3 & 31) > 29 || (var3 >> 5 & 31) > 29) {
                                       this.b = 9;
                                       var1.i = "too many length or distance symbols";
                                       var14 = -3;
                                       this.l = var4;
                                       this.k = var5;
                                       var1.c = var7;
                                       var1.d += (long)(var6 - var1.b);
                                       var1.b = var6;
                                       this.q = var8;
                                       return this.b(var1, var14);
                                    }

                                    var3 = 258 + (var3 & 31) + (var3 >> 5 & 31);
                                    if (this.f != null && this.f.length >= var3) {
                                       for(int var10 = 0; var10 < var3; ++var10) {
                                          this.f[var10] = 0;
                                       }
                                    } else {
                                       this.f = new int[var3];
                                    }

                                    var4 >>>= 14;
                                    var5 -= 14;
                                    this.e = 0;
                                    this.b = 4;
                                    break;
                                 }

                                 if (var7 == 0) {
                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var2);
                                 }

                                 var2 = 0;
                                 --var7;
                                 var4 |= (var1.a[var6++] & 255) << var5;
                                 var5 += 8;
                              }
                           case 4:
                              break;
                           case 5:
                              break label404;
                           case 6:
                              break label326;
                           case 7:
                              break label328;
                           case 8:
                              break label346;
                           case 9:
                              var14 = -3;
                              this.l = var4;
                              this.k = var5;
                              var1.c = var7;
                              var1.d += (long)(var6 - var1.b);
                              var1.b = var6;
                              this.q = var8;
                              return this.b(var1, var14);
                           default:
                              var14 = -2;
                              this.l = var4;
                              this.k = var5;
                              var1.c = var7;
                              var1.d += (long)(var6 - var1.b);
                              var1.b = var6;
                              this.q = var8;
                              return this.b(var1, var14);
                           }

                           while(true) {
                              if (this.e >= 4 + (this.d >>> 10)) {
                                 while(this.e < 19) {
                                    this.f[a[this.e++]] = 0;
                                 }

                                 this.g[0] = 7;
                                 var3 = this.t.a(this.f, this.g, this.h, this.m, var1);
                                 if (var3 != 0) {
                                    if (var3 == -3) {
                                       this.f = null;
                                       this.b = 9;
                                    }

                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var3);
                                 }

                                 this.e = 0;
                                 this.b = 5;
                                 break;
                              }

                              while(var5 < 3) {
                                 if (var7 == 0) {
                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var2);
                                 }

                                 var2 = 0;
                                 --var7;
                                 var4 |= (var1.a[var6++] & 255) << var5;
                                 var5 += 8;
                              }

                              this.f[a[this.e++]] = var4 & 7;
                              var4 >>>= 3;
                              var5 -= 3;
                           }
                        }

                        while(true) {
                           var3 = this.d;
                           if (this.e >= 258 + (var3 & 31) + (var3 >> 5 & 31)) {
                              this.h[0] = -1;
                              var16 = new int[1];
                              var17 = new int[1];
                              int[] var18 = new int[1];
                              int[] var20 = new int[1];
                              var16[0] = 9;
                              var17[0] = 6;
                              var3 = this.d;
                              var3 = this.t.a(257 + (var3 & 31), 1 + (var3 >> 5 & 31), this.f, var16, var17, var18, var20, this.m, var1);
                              if (var3 != 0) {
                                 if (var3 == -3) {
                                    this.f = null;
                                    this.b = 9;
                                 }

                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var3);
                              }

                              this.i.a(var16[0], var17[0], this.m, var18[0], this.m, var20[0], var1);
                              this.b = 6;
                              break;
                           }

                           for(var3 = this.g[0]; var5 < var3; var5 += 8) {
                              if (var7 == 0) {
                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var2);
                              }

                              var2 = 0;
                              --var7;
                              var4 |= (var1.a[var6++] & 255) << var5;
                           }

                           if (this.h[0] == -1) {
                              ;
                           }

                           var3 = this.m[(this.h[0] + (var4 & u[var3])) * 3 + 1];
                           int var13 = this.m[(this.h[0] + (var4 & u[var3])) * 3 + 2];
                           if (var13 < 16) {
                              var4 >>>= var3;
                              var5 -= var3;
                              this.f[this.e++] = var13;
                           } else {
                              int var11 = var13 == 18 ? 7 : var13 - 14;

                              int var12;
                              for(var12 = var13 == 18 ? 11 : 3; var5 < var3 + var11; var5 += 8) {
                                 if (var7 == 0) {
                                    this.l = var4;
                                    this.k = var5;
                                    var1.c = var7;
                                    var1.d += (long)(var6 - var1.b);
                                    var1.b = var6;
                                    this.q = var8;
                                    return this.b(var1, var2);
                                 }

                                 var2 = 0;
                                 --var7;
                                 var4 |= (var1.a[var6++] & 255) << var5;
                              }

                              var4 >>>= var3;
                              var5 -= var3;
                              var12 += var4 & u[var11];
                              var4 >>>= var11;
                              var5 -= var11;
                              var11 = this.e;
                              var3 = this.d;
                              if (var11 + var12 > 258 + (var3 & 31) + (var3 >> 5 & 31) || var13 == 16 && var11 < 1) {
                                 this.f = null;
                                 this.b = 9;
                                 var1.i = "invalid bit length repeat";
                                 var14 = -3;
                                 this.l = var4;
                                 this.k = var5;
                                 var1.c = var7;
                                 var1.d += (long)(var6 - var1.b);
                                 var1.b = var6;
                                 this.q = var8;
                                 return this.b(var1, var14);
                              }

                              var13 = var13 == 16 ? this.f[var11 - 1] : 0;

                              do {
                                 this.f[var11++] = var13;
                                 --var12;
                              } while(var12 != 0);

                              this.e = var11;
                           }
                        }
                     }

                     this.l = var4;
                     this.k = var5;
                     var1.c = var7;
                     var1.d += (long)(var6 - var1.b);
                     var1.b = var6;
                     this.q = var8;
                     if ((var2 = this.i.a(this, var1, var2)) != 1) {
                        return this.b(var1, var2);
                     }

                     var2 = 0;
                     this.i.a(var1);
                     var6 = var1.b;
                     var7 = var1.c;
                     var4 = this.l;
                     var5 = this.k;
                     var8 = this.q;
                     var9 = var8 < this.p ? this.p - var8 - 1 : this.o - var8;
                     if (this.j != 0) {
                        this.b = 7;
                        break;
                     }

                     this.b = 0;
                  }

                  this.q = var8;
                  var2 = this.b(var1, var2);
                  var8 = this.q;
                  int var10000;
                  if (var8 < this.p) {
                     var10000 = this.p - var8 - 1;
                  } else {
                     var10000 = this.o - var8;
                  }

                  if (this.p != this.q) {
                     this.l = var4;
                     this.k = var5;
                     var1.c = var7;
                     var1.d += (long)(var6 - var1.b);
                     var1.b = var6;
                     this.q = var8;
                     return this.b(var1, var2);
                  }

                  this.b = 8;
               }

               byte var15 = 1;
               this.l = var4;
               this.k = var5;
               var1.c = var7;
               var1.d += (long)(var6 - var1.b);
               var1.b = var6;
               this.q = var8;
               return this.b(var1, var15);
            }
         }
      }
   }

   void a(zcgb var1) {
      this.a(var1, (long[])null);
      this.n = null;
      this.m = null;
   }

   int b(zcgb var1, int var2) {
      int var4 = var1.f;
      int var5 = this.p;
      int var3 = (var5 <= this.q ? this.q : this.o) - var5;
      if (var3 > var1.g) {
         var3 = var1.g;
      }

      if (var3 != 0 && var2 == -5) {
         var2 = 0;
      }

      var1.g -= var3;
      var1.h += (long)var3;
      if (this.r != null) {
         var1.m = this.s = var1.n.a(this.s, this.n, var5, var3);
      }

      System.arraycopy(this.n, var5, var1.e, var4, var3);
      var4 += var3;
      var5 += var3;
      if (var5 == this.o) {
         byte var6 = 0;
         if (this.q == this.o) {
            this.q = 0;
         }

         var3 = this.q - var6;
         if (var3 > var1.g) {
            var3 = var1.g;
         }

         if (var3 != 0 && var2 == -5) {
            var2 = 0;
         }

         var1.g -= var3;
         var1.h += (long)var3;
         if (this.r != null) {
            var1.m = this.s = var1.n.a(this.s, this.n, var6, var3);
         }

         System.arraycopy(this.n, var6, var1.e, var4, var3);
         var4 += var3;
         var5 = var6 + var3;
      }

      var1.f = var4;
      this.p = var5;
      return var2;
   }
}
